package model.policia.tiempo;



public class Tiempo {
	
	public enum Dia{Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo};
	private int horasRestantes;
	private int edificiosVisitados;
	private int HeridasDeCuchillo;
	private static final int TiempoMaximoAJugar = 24*6 +10;//cte: 6 dias y 10 horas
	
	
	public Tiempo(){
		this.horasRestantes = TiempoMaximoAJugar;
		this.edificiosVisitados = 0;
		this.HeridasDeCuchillo = 0;
	}
	
	public Dia getDia() {
		int dia = (this.jugado()+7)/24;//cuento los dias que pasaron
		return Dia.values()[dia];
	}
	
	public int jugado(){
		return (TiempoMaximoAJugar)-this.horasRestantes;	//inicial - restantes
	}

	public int getHora() {
		return ((this.jugado()+7)%24);
	}

	public int restante() {
		return this.horasRestantes;
	}

	public boolean EmitirOrdenDeArresto() {
		this.horasRestantes = this.horasRestantes - 3;
		this.verificarSiHayQueDormir();
		return verificarSiQuedaTiempo();
	}

	private void verificarSiHayQueDormir() {
		int hora = this.getHora();
		if (hora >= 23 || hora < 7){
			this.horasRestantes = this.horasRestantes - 8;
		}
	}

	public boolean HeridaPorArmaDeFuego() {
		this.horasRestantes = this.horasRestantes -4;
		this.verificarSiHayQueDormir();
		return verificarSiQuedaTiempo();
	}

	public boolean viajar(int velocidad, int distancia) {
		int horas = distancia/velocidad;
		this.horasRestantes = this.horasRestantes - horas;
		this.edificiosVisitados = 0;
		this.verificarSiHayQueDormir();
		return verificarSiQuedaTiempo();
	}

	public boolean entrarEdificio() {
		//SUPUESTO: La cuarta vez se repite el ciclo
		this.horasRestantes = this.horasRestantes -(edificiosVisitados + 1);
		if (edificiosVisitados < 2){
			edificiosVisitados += 1;
		}else{
			edificiosVisitados = 0;
		}
		this.verificarSiHayQueDormir();
		return verificarSiQuedaTiempo();
	}

	public boolean heridaCuchillo() {
		this.horasRestantes = this.horasRestantes - (1 + this.HeridasDeCuchillo);
		this.HeridasDeCuchillo = 1;
		this.verificarSiHayQueDormir();
		return verificarSiQuedaTiempo();
	}

	public boolean verificarSiQuedaTiempo() {
		return (this.restante() > 0);
	}
}
